﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace katOS
{
    interface InterfaceQueue<G>
    {
        G Peek();
        G removeFirst();
        bool isEmpty();
        void Remove(G some_object);
        LinkedList<G> getQueue();
        G getFirst();

        G getElement(int i);
        G getLastProcess();

        void addProcess(G new_process);

        int getQuantum();
        void setQuantum(int quantum);
        bool getPreemptive();
        void setPreemptive(bool preemptive);
        int getQueueOnQuantumEnd();
        void setQueueOnQuantumEnd(int queueOnQuantumEnd);
        int getQueueOnIOEnd();
        void setQueueOnIOEnd(int queueOnIOEnd);
        int getId();
        void setId(int id);
        String getName();
        void setName(String name);
        String getType();
        void setType(String type);
        int getQueueNumber();
        void setQueueNumber(int queue_num);
        void addExecTime();
        int getExecTime();
    }
}
